<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			<p>computed默认只有getter，但是也可以提供一个setter来用于执行绑定更新(通常用于更新其他变量)</p>
			<p>{{message1}}</p>
			<p>{{message2}}</p>
			<p>{{message3}}</p>
		</div>
	</body>
<script type="text/javascript">
var app = new Vue({
	el: '#app',
	data: {
		message1: "你想看什么1",
		message2: "你想看什么2"
	},
	
	//使用computed属性来定义计算属性
	computed: {
		message3: {
			get: function(){
				//message3依赖于message1和message2，所以如果message1和message2没有变化时，该方法返回值是被缓存的。
				console.log("测试缓存");  //在message1、message2不变的情况下，本处是不运行的
				return this.message1 + this.message2;
			},
			set: function(val){
				this.message1 = "你被message3影响了(" + val + ")知道吗1";
				this.message2 = "你被message3影响了(" + val + ")知道吗2";
			}
		}
	}
});
app.message3 = "虾米鬼哦3";
//界面的message3为：
//你被message3影响了(虾米鬼哦3)知道吗1你被message3影响了(虾米鬼哦3)知道吗2
//原因如下：
//1.app.message3 = "虾米鬼哦3"，此时message3="虾米鬼哦3"，并触发message3.set。
//2.message3.set() 后，message1 = "你被message3影响了(虾米鬼哦3)知道吗1";message2 = "你被message3影响了(虾米鬼哦3)知道吗2";
//3.触发message3.get(),得到最终的界面变量message3：
//message3 = "你被message3影响了(虾米鬼哦3)知道吗1你被message3影响了(虾米鬼哦3)知道吗2"
</script>
</html>
